﻿
Public Interface base_deliverer_t
    Function settings() As deliverer_settings
End Interface

Public Interface sync_deliverer_t
    Inherits base_deliverer_t
    Function deliver(ByVal c As [case]) As Boolean
End Interface

Public Interface async_deliverer_t
    Inherits base_deliverer_t
    Function deliver(ByVal c As [case]) As eventComb
End Interface

Public Class base_deliverer(Of T As deliverer_settings)
    Implements base_deliverer_t

    Private ReadOnly s As T = Nothing

    Protected Sub New(ByVal s As T)
        Me.s = check_resolve_or_alloc(s)
    End Sub

    Public Function settings() As deliverer_settings Implements base_deliverer_t.settings
        Return s
    End Function
End Class